(function($){ 'use strict'; $(window).on('elementor/frontend/init', function (){ qodefAddonsElementor.init(); qodefAddonsElementorPromoWidgets.init(); } ); var qodefAddonsElementor={ init: function (){ var isEditMode=Boolean(elementorFrontend.isEditMode()); if(isEditMode){ for(var key in qodefAddonsCore.shortcodes){ for(var keyChild in qodefAddonsCore.shortcodes[key]){ qodefAddonsElementor.reInitShortcode(key, keyChild ); }} }}, reInitShortcode: function(key, keyChild){ elementorFrontend.hooks.addAction('frontend/element_ready/' + key + '.default', function(e){ if(typeof qodefAddonsCore.shortcodes[key][keyChild]==='undefined'){ console.log(keyChild); }else if(typeof qodefAddonsCore.shortcodes[key][keyChild].initSlider==='function'&&e.find('.qodef-qi-swiper-container').length){ var $sliders=e.find('.qodef-qi-swiper-container'); if($sliders.length){ $sliders.each(function (){ qodefAddonsCore.shortcodes[key][keyChild].initSlider($(this)); } ); }}else if(typeof qodefAddonsCore.shortcodes[key][keyChild].initItem==='function'&&e.find('.qodef-shortcode').length){ qodefAddonsCore.shortcodes[key][keyChild].initItem(e.find('.qodef-shortcode')); }else{ qodefAddonsCore.shortcodes[key][keyChild].init(); }} ); }, }; var qodefAddonsElementorPromoWidgets={ init: function (){ if(typeof elementor!=='undefined'){ elementor.hooks.addFilter('panel/elements/regionViews', function(panel){ var qodeWidgetsPromoHandler, elementsView=panel.elements.view, categoriesView=panel.categories.view; qodeWidgetsPromoHandler={ className: function (){ var className='elementor-element-wrapper'; if(!this.isEditable()){ className +=' elementor-element--promotion'; if(this.isQodeWidget()){ className +=' qodef-element--promotion'; }} return className; }, isQodeWidget: function (){ if(undefined!==this.model.get('name')){ return 0===this.model.get('name').indexOf('qi_'); }}, getElementObj: function(key){ var widgetObj=elementor.config.promotionWidgets.find(function(widget, index){ if(widget.name==key){ return true; }} ); return widgetObj; }, onMouseDown: function (){ var actionURL=elementor.config.elementPromotionURL.replace('%s', this.model.get('name') ), title=this.model.get('title'), content=sprintf( wp.i18n.__('Use %s widget and dozens more pro features to extend your toolbox and build sites faster and better.', 'qi-addons-for-elementor' ), title ), promotion=elementor.config.promotion.elements; if(this.isQodeWidget()){ var widgetObject=this.getElementObj(this.model.get('name')); if(typeof widgetObject.helpUrl!=='undefined'){ actionURL=widgetObject.helpUrl; } content=sprintf( wp.i18n.__('The %s comes with advanced professional functionalities and an even smoother website-making experience. %s Upgrade Qi Addons for Elementor %s', 'qi-addons-for-elementor' ), title, '', '' ); } elementor.promotion.showDialog({ title: sprintf( wp.i18n.__('%s Widget', 'qi-addons-for-elementor' ), title ), content: content, position: { blockStart: '-7' }, targetElement: this.el, actionButton: { url: actionURL, text: promotion.action_button.text, classes: promotion.action_button.classes||['elementor-button', 'go-pro'] }} ); }}; panel.elements.view=elementsView.extend({ childView: elementsView.prototype.childView.extend(qodeWidgetsPromoHandler) } ); panel.categories.view=categoriesView.extend({ childView: categoriesView.prototype.childView.extend({ childView: categoriesView.prototype.childView.prototype.childView.extend(qodeWidgetsPromoHandler) } ) } ); return panel; } ); }}, };})(jQuery); (function ($){ const wdtSectionsOptionsHandler=function($scope){ const animationEffectInstance=new wdtWidgetsAnimationEffectHandlerInit($scope); animationEffectInstance.init(); }; const wdtWidgetsAnimationEffectHandlerInit=function($scope){ const $self=this, $window=$(window), $sectionId=$scope.data('id'), $editMode=Boolean(elementorFrontend.isEditMode()), $activeBreakpoints=elementorFrontend.config.responsive.activeBreakpoints, $deviceMode=elementorFrontend.getCurrentDeviceMode(); let $activeBreakpointkeys=[]; let $animationEffectSettings=false; let $mouseMoveItemSettings={}; let $scrollItemSettings={}; $self.init=function(){ $self.animationEffectInit(); }; $self.filterObjects=function($settings, $searchKey){ let $settingKeys=Object.keys($settings).filter((key)=> key.includes($searchKey)); let $filteredSettings=$settingKeys.reduce((cur, key)=> { return Object.assign(cur, { [key]: $settings[key] })}, {}); if(Object.keys($filteredSettings).length){ return $filteredSettings; } return false; }; $self.animationEffectInit=function(){ if($editMode){ $animationEffectSettings=$self.generateEditorSettings($sectionId); }else{ $animationEffectSettings=$scope.data('settings')||false; $animationEffectSettings=$self.filterObjects($animationEffectSettings, 'wdt_'); } if(!$animationEffectSettings||$animationEffectSettings['wdt_animation_effect']==='none'||$animationEffectSettings['wdt_animation_effect']===''){ return false; } $self.updateActiveBreakpoints(); $self.generateBgItemsInSections(); if(Object.keys($mouseMoveItemSettings).length){ $self.animationEffectMouseMove(); } if(Object.keys($scrollItemSettings).length){ let img=new Image(); if($animationEffectSettings['wdt_bg_image']['url']!==''){ img.src=$animationEffectSettings['wdt_bg_image']['url']; img.onload=function(){ let $bgCSS={ 'height': this.height+'px' }; $scope.find('.wdt-section-bgeffects-image').css($bgCSS); $self.animationEffectScroll(); }} }}; $self.generateEditorSettings=function($sectionId){ let $editorModels=null, $editorSettings={}; if(!window.elementor.hasOwnProperty('elements')){ return false; } $editorModels=window.elementor.elements.models; if(!$editorModels){ return false; } $.each($editorModels, function(index, obj){ if($sectionId===obj.id){ $editorSettings=obj.attributes.settings.attributes; }}); if(!Object.keys($editorSettings).length){ return false; } return $self.filterObjects($editorSettings, 'wdt_'); }; $self.updateActiveBreakpoints=function(){ $.each($activeBreakpoints, function (key, value){ if('widescreen'===key){ $activeBreakpointkeys.push('desktop'); $activeBreakpointkeys.push(key); }else{ $activeBreakpointkeys.push(key); }}); if(-1===$activeBreakpointkeys.indexOf('widescreen')){ $activeBreakpointkeys.push('desktop'); }}; $self.generateBreakpointwiseBgItems=function($section){ let $bgItems={}; let $wdt_bg_image=($section['wdt_bg_image']&&''!=$section['wdt_bg_image']['url']) ? $section['wdt_bg_image']['url']:''; let $wdt_bg_position=($section['wdt_bg_position']&&''!=$section['wdt_bg_position']) ? $section['wdt_bg_position']:'center center'; let $wdt_bg_size=($section['wdt_bg_size']&&''!=$section['wdt_bg_size']) ? $section['wdt_bg_size']:''; $activeBreakpointkeys.forEach(function(breakpoint){ if('desktop'===breakpoint){ $bgItems[breakpoint]={ 'bgImage':$wdt_bg_image, 'bgPosition':$wdt_bg_position, 'bgSize':$wdt_bg_size };}else{ $bgItems[breakpoint]={ 'bgImage':($section['wdt_bg_image_' + breakpoint]&&''!=$section['wdt_bg_image_' + breakpoint]['url']) ? $section['wdt_bg_image_' + breakpoint]['url']:$wdt_bg_image, 'bgPosition':($section['wdt_bg_position_' + breakpoint]&&''!=$section['wdt_bg_position_' + breakpoint]) ? $section['wdt_bg_position_' + breakpoint]:$wdt_bg_position, 'bgSize':($section['wdt_bg_size_' + breakpoint]&&''!=$section['wdt_bg_size_' + breakpoint]) ? $section['wdt_bg_size_' + breakpoint]:$wdt_bg_size };}}); return $bgItems; }; $self.generateBgItemsInSections=function(){ $('.wdt-section-bgeffects-item', $scope).remove(); const $effectType=$animationEffectSettings['wdt_animation_effect']; let $bgItem=$self.generateBreakpointwiseBgItems($animationEffectSettings); if($effectType==='none'||$effectType===''||!$bgItem[$deviceMode]){ return false; } if(!$scope.hasClass('wdt-section-bgeffects')){ $scope.addClass('wdt-section-bgeffects'); } const $bgImage=$bgItem[$deviceMode].bgImage; const $bgPosition=$bgItem[$deviceMode].bgPosition; const $bgSize=$bgItem[$deviceMode].bgSize; if($effectType==='mouse-move'){ let $layout=$('
').prependTo($scope); $mouseMoveItemSettings=$self.filterObjects($animationEffectSettings, 'wdt_mme_'); $mouseMoveItemSettings['wdt_item']=$layout; }else if($effectType==='scroll'){ let $layout=$('
').prependTo($scope); let $bgCSS={ 'background-image': 'url(' + $bgImage + ')', 'background-position': $bgPosition, 'background-repeat': 'no-repeat', 'background-size': $bgSize }; $('> .wdt-section-bgeffects-image', $layout).css($bgCSS); $scrollItemSettings=$self.filterObjects($animationEffectSettings, 'wdt_sle_'); $scrollItemSettings['wdt_item']=$layout; }}; $self.getMouseMoveResponsiveSettings=function($mouseMoveItem){ let $mouseMoveBreakpointItem={}; $activeBreakpointkeys.forEach(function($breakpoint){ if('desktop'===$breakpoint){ $mouseMoveBreakpointItem[$breakpoint]={ 'speed':($mouseMoveItem['wdt_mme_speed']['size']&&''!=$mouseMoveItem['wdt_mme_speed']['size']) ? $mouseMoveItem['wdt_mme_speed']['size']:0.1, 'depth':($mouseMoveItem['wdt_mme_depth']['size']&&''!=$mouseMoveItem['wdt_mme_depth']['size']) ? $mouseMoveItem['wdt_mme_depth']['size']:1 };}else{ $mouseMoveBreakpointItem[$breakpoint]={ 'speed':($mouseMoveItem['wdt_mme_speed_' + $breakpoint]['size']&&''!=$mouseMoveItem['wdt_mme_speed_' + $breakpoint]['size']) ? $mouseMoveItem['wdt_mme_speed_' + $breakpoint]['size']:$mouseMoveItem['wdt_mme_speed']['size'], 'depth':($mouseMoveItem['wdt_mme_depth_' + $breakpoint]['size']&&''!=$mouseMoveItem['wdt_mme_depth_' + $breakpoint]['size']) ? $mouseMoveItem['wdt_mme_depth_' + $breakpoint]['size']:$mouseMoveItem['wdt_mme_depth']['size'] };}}); return $mouseMoveBreakpointItem; }; $self.animationEffectMouseMove=function(){ let $mouseMoveBreakpointwiseItem=$self.getMouseMoveResponsiveSettings($mouseMoveItemSettings); if(!$mouseMoveBreakpointwiseItem[$deviceMode]){ return false; } const $speed=$mouseMoveBreakpointwiseItem[$deviceMode].speed; const $depth=$mouseMoveBreakpointwiseItem[$deviceMode].depth; const $moveAlong=$mouseMoveItemSettings['wdt_mme_move_along'] ? $mouseMoveItemSettings['wdt_mme_move_along']:'both'; const $invertMovement=$mouseMoveItemSettings['wdt_mme_invert_movement'] ? Boolean($mouseMoveItemSettings['wdt_mme_invert_movement']):false; let $options={}; $scope.find('.wdt-effect-mouse-move-wrapper').attr('data-depth', $depth); if($moveAlong==='x-axis'){ $options['scalarX']=10.0; $options['scalarY']=0.0; } if($moveAlong==='y-axis'){ $options['scalarX']=0.0; $options['scalarY']=10.0; } if($moveAlong==='both'){ $options['scalarX']=10.0; $options['scalarY']=10.0; } $options['frictionX']=$speed; $options['frictionY']=$speed; $options['invertX']=$invertMovement; $options['invertY']=$invertMovement; $parallaxInstance=$scope.parallax($options); }; $self.getScrollResponsiveSettings=function($scrollItem){ let $scrollBreakpointItem={}; let $wdt_sle_parallax_x_depth=($scrollItem['wdt_sle_parallax_x_depth']&&''!=$scrollItem['wdt_sle_parallax_x_depth']['size']) ? $scrollItem['wdt_sle_parallax_x_depth']['size']:50; let $wdt_sle_parallax_y_depth=($scrollItem['wdt_sle_parallax_y_depth']&&''!=$scrollItem['wdt_sle_parallax_y_depth']['size']) ? $scrollItem['wdt_sle_parallax_y_depth']['size']:50; let $wdt_sle_rotate_x_angle=($scrollItem['wdt_sle_rotate_x_angle']&&''!=$scrollItem['wdt_sle_rotate_x_angle']['size']) ? $scrollItem['wdt_sle_rotate_x_angle']['size']:45; let $wdt_sle_rotate_y_angle=($scrollItem['wdt_sle_rotate_y_angle']&&''!=$scrollItem['wdt_sle_rotate_y_angle']['size']) ? $scrollItem['wdt_sle_rotate_y_angle']['size']:45; let $wdt_sle_rotate_z_angle=($scrollItem['wdt_sle_rotate_z_angle']&&''!=$scrollItem['wdt_sle_rotate_z_angle']['size']) ? $scrollItem['wdt_sle_rotate_z_angle']['size']:45; let $wdt_sle_scale_value=($scrollItem['wdt_sle_scale_value']&&''!=$scrollItem['wdt_sle_scale_value']['size']) ? $scrollItem['wdt_sle_scale_value']['size']:1; let $wdt_sle_blur_value=($scrollItem['wdt_sle_blur_value']&&''!=$scrollItem['wdt_sle_blur_value']['size']) ? $scrollItem['wdt_sle_blur_value']['size']:0; let $wdt_sle_opacity_value=($scrollItem['wdt_sle_opacity_value']&&''!=$scrollItem['wdt_sle_opacity_value']['size']) ? $scrollItem['wdt_sle_opacity_value']['size']:1; $activeBreakpointkeys.forEach(function($breakpoint){ if('desktop'===$breakpoint){ $scrollBreakpointItem[$breakpoint]={ 'parallaxDepthX': $wdt_sle_parallax_x_depth, 'parallaxDepthY': $wdt_sle_parallax_y_depth, 'rotateAngleX':$wdt_sle_rotate_x_angle, 'rotateAngleY':$wdt_sle_rotate_y_angle, 'rotateAngleZ':$wdt_sle_rotate_z_angle, 'scaleValue':$wdt_sle_scale_value, 'blurValue':$wdt_sle_blur_value, 'opacityValue':$wdt_sle_opacity_value };}else{ $scrollBreakpointItem[$breakpoint]={ 'parallaxDepthX':($scrollItem['wdt_sle_parallax_x_depth_' + $breakpoint]&&''!=$scrollItem['wdt_sle_parallax_x_depth_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_parallax_x_depth_' + $breakpoint]['size']:$wdt_sle_parallax_x_depth, 'parallaxDepthY':($scrollItem['wdt_sle_parallax_y_depth_' + $breakpoint]&&''!=$scrollItem['wdt_sle_parallax_y_depth_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_parallax_y_depth_' + $breakpoint]['size']:$wdt_sle_parallax_y_depth, 'rotateAngleX':($scrollItem['wdt_sle_rotate_x_angle_' + $breakpoint]&&''!=$scrollItem['wdt_sle_rotate_x_angle_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_rotate_x_angle_' + $breakpoint]['size']:$wdt_sle_rotate_x_angle, 'rotateAngleY':($scrollItem['wdt_sle_rotate_y_angle_' + $breakpoint]&&''!=$scrollItem['wdt_sle_rotate_y_angle_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_rotate_y_angle_' + $breakpoint]['size']:$wdt_sle_rotate_y_angle, 'rotateAngleZ':($scrollItem['wdt_sle_rotate_z_angle_' + $breakpoint]&&''!=$scrollItem['wdt_sle_rotate_z_angle_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_rotate_z_angle_' + $breakpoint]['size']:$wdt_sle_rotate_z_angle, 'scaleValue':($scrollItem['wdt_sle_scale_value_' + $breakpoint]&&''!=$scrollItem['wdt_sle_scale_value_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_scale_value_' + $breakpoint]['size']:$wdt_sle_scale_value, 'blurValue':($scrollItem['wdt_sle_blur_value_' + $breakpoint]&&''!=$scrollItem['wdt_sle_blur_value_' + $breakpoint]['size']) ? $scrollItem['wdt_sle_blur_value_' + $breakpoint]['size']:$wdt_sle_blur_value, 'opacityValue':($scrollItem['wdt_sle_opacity_value' + $breakpoint]&&''!=$scrollItem['wdt_sle_opacity_value' + $breakpoint]['size']) ? $scrollItem['wdt_sle_opacity_value' + $breakpoint]['size']:$wdt_sle_opacity_value, };}}); return $scrollBreakpointItem; }; $self.animationEffectScroll=function(){ let $scrollBreakpointwiseItem=$self.getScrollResponsiveSettings($scrollItemSettings); if(!$scrollBreakpointwiseItem[$deviceMode]){ return false; } const $parallaxDirectionX=$scrollItemSettings['wdt_sle_parallax_x_direction'] ? Boolean($scrollItemSettings['wdt_sle_parallax_x_direction']):false; const $parallaxDepthX=$scrollBreakpointwiseItem[$deviceMode].parallaxDepthX; const $parallaxDirectionY=$scrollItemSettings['wdt_sle_parallax_y_direction'] ? Boolean($scrollItemSettings['wdt_sle_parallax_y_direction']):false; const $parallaxDepthY=$scrollBreakpointwiseItem[$deviceMode].parallaxDepthY; const $rotateX=$scrollItemSettings['wdt_sle_rotate_x'] ? Boolean($scrollItemSettings['wdt_sle_rotate_x']):false; const $rotateAngleX=$scrollBreakpointwiseItem[$deviceMode].rotateAngleX; const $rotateY=$scrollItemSettings['wdt_sle_rotate_y'] ? Boolean($scrollItemSettings['wdt_sle_rotate_y']):false; const $rotateAngleY=$scrollBreakpointwiseItem[$deviceMode].rotateAngleY; const $rotateZ=$scrollItemSettings['wdt_sle_rotate_z'] ? Boolean($scrollItemSettings['wdt_sle_rotate_z']):false; const $rotateAngleZ=$scrollBreakpointwiseItem[$deviceMode].rotateAngleZ; const $scale=$scrollItemSettings['wdt_sle_scale'] ? Boolean($scrollItemSettings['wdt_sle_scale']):false; const $scaleValue=$scrollBreakpointwiseItem[$deviceMode].scaleValue; const $blur=$scrollItemSettings['wdt_sle_blur'] ? Boolean($scrollItemSettings['wdt_sle_blur']):false; const $blurValue=$scrollBreakpointwiseItem[$deviceMode].blurValue; const $opacity=$scrollItemSettings['wdt_sle_opacity'] ? Boolean($scrollItemSettings['wdt_sle_opacity']):false; const $opacityValue=$scrollBreakpointwiseItem[$deviceMode].opacityValue; const $itemTop=+$scope.find('.wdt-effect-scroll-wrapper').offset().top; const $itemHeight=+$scope.find('.wdt-effect-scroll-wrapper .wdt-section-bgeffects-image').height(); const $toScroll=($itemTop + $itemHeight); const $windowHeight=$window.height(); const $fromScroll=($itemTop - $windowHeight); if($parallaxDirectionX){ $scope.find('.wdt-effect-scroll-wrapper .wdt-section-bgeffects-image').css({ 'left': '-'+$parallaxDepthX+'px' }) }else if($parallaxDirectionY){ $scope.find('.wdt-effect-scroll-wrapper .wdt-section-bgeffects-image').css({ 'top': '-'+$parallaxDepthY+'px' }) } let $options={'distance': 10, 'smoothness': 30, 'from-scroll': $fromScroll, 'to-scroll': $toScroll}; if($parallaxDirectionX){ $options['x']=$parallaxDepthX; } if($parallaxDirectionY){ $options['y']=$parallaxDepthY; } if($rotateX){ $options['rotateX']=$rotateAngleX; } if($rotateY){ $options['rotateY']=$rotateAngleY; } if($rotateZ){ $options['rotateZ']=$rotateAngleZ; } if($scale){ $options['scale']=$scaleValue; } if($blur){ $options['blur']=$blurValue; } if($opacity){ $options['opacity']=$opacityValue; } $scope.find('.wdt-effect-scroll-wrapper').attr('data-parallax', JSON.stringify($options)); };}; $(window).on('elementor/frontend/init', function (){ elementorFrontend.hooks.addAction('frontend/element_ready/section', wdtSectionsOptionsHandler); }); })(jQuery); !function(a){({showLogs:!1,round:1e3,init:function(){if(this._log("init"),this._inited)return this._log("Already Inited"),void(this._inited=!0);this._requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a,t){window.setTimeout(a,1e3/60)},this._onScroll(!0)},_inited:!1,_properties:["x","y","z","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","scale","blur","opacity"],_requestAnimationFrame:null,_log:function(a){this.showLogs&&console.log("Parallax Scroll / "+a)},_onScroll:function(t){var e=a(document).scrollTop(),l=a(window).height();this._log("onScroll "+e),a("[data-parallax]").each(a.proxy(function(n,r){var s=a(r),i=[],o=!1,c=s.data("style");null==c&&(c=s.attr("style")||"",s.data("style",c));var u,d=[s.data("parallax")];for(u=2;s.data("parallax"+u);u++)d.push(s.data("parallax"+u));var m=d.length;for(u=0;uh&&("back"==s.data("sens")?(_=1,s.data("sens","go")):_++),A0&&_<=g){var u=e;"back"==s.data("sens")&&(u=l,l=-l,f=y,g=x),c=a.easing[f](null,_,u,l,g)}(c=Math.ceil(c*this.round)/this.round)==n&&r==l&&(c=l),i[t]||(i[t]=0),i[t]+=c,n!=i[t]&&(s.data("_"+t,i[t]),o=!0)}},this))}if(o){if(null!=i.z){var X=p.perspective;null==X&&(X=800);var Y=s.parent();Y.data("style")||Y.data("style",Y.attr("style")||""),Y.attr("style","perspective:"+X+"px; -webkit-perspective:"+X+"px; "+Y.data("style"))}null==i.scaleX&&(i.scaleX=1),null==i.scaleY&&(i.scaleY=1),null==i.scaleZ&&(i.scaleZ=1),null!=i.scale&&(i.scaleX*=i.scale,i.scaleY*=i.scale,i.scaleZ*=i.scale);var Z="translate3d("+(i.x?i.x:0)+"px, "+(i.y?i.y:0)+"px, "+(i.z?i.z:0)+"px)"+" "+("rotateX("+(i.rotateX?i.rotateX:0)+"deg) rotateY("+(i.rotateY?i.rotateY:0)+"deg) rotateZ("+(i.rotateZ?i.rotateZ:0)+"deg)")+" "+("scaleX("+i.scaleX+") scaleY("+i.scaleY+") scaleZ("+i.scaleZ+")")+";";this._log(Z);var q="";if(null!=i.blur){var F="blur("+i.blur+"px);";q="filter:"+F+" -webkit-filter:"+F}var k="";null!=i.opacity&&(k="opacity:"+i.opacity+";"),s.attr("style","transform:"+Z+" -webkit-transform:"+Z+" "+q+" "+k+" "+c)}},this)),window.requestAnimationFrame?window.requestAnimationFrame(a.proxy(this._onScroll,this,!1)):this._requestAnimationFrame(a.proxy(this._onScroll,this,!1))}}).init()}(jQuery); !function(r,u,d,m){"use strict";var o="parallax",n={relativeInput:!1,clipRelativeInput:!1,calibrationThreshold:100,calibrationDelay:500,supportDelay:500,calibrateX:!1,calibrateY:!0,invertX:!0,invertY:!0,limitX:!1,limitY:!1,scalarX:10,scalarY:10,frictionX:.1,frictionY:.1,originX:.5,originY:.5,pointerEvents:!0,precision:1};function a(t,i){this.element=t,this.$context=r(t).data("api",this),this.$layers=this.$context.find(".layer");var e={calibrateX:this.$context.data("calibrate-x")||null,calibrateY:this.$context.data("calibrate-y")||null,invertX:this.$context.data("invert-x")||null,invertY:this.$context.data("invert-y")||null,limitX:parseFloat(this.$context.data("limit-x"))||null,limitY:parseFloat(this.$context.data("limit-y"))||null,scalarX:parseFloat(this.$context.data("scalar-x"))||null,scalarY:parseFloat(this.$context.data("scalar-y"))||null,frictionX:parseFloat(this.$context.data("friction-x"))||null,frictionY:parseFloat(this.$context.data("friction-y"))||null,originX:parseFloat(this.$context.data("origin-x"))||null,originY:parseFloat(this.$context.data("origin-y"))||null,pointerEvents:this.$context.data("pointer-events")||!0,precision:parseFloat(this.$context.data("precision"))||1};for(var s in e)null===e[s]&&delete e[s];r.extend(this,n,i,e),this.calibrationTimer=null,this.calibrationFlag=!0,this.enabled=!1,this.depthsX=[],this.depthsY=[],this.raf=null,this.bounds=null,this.ex=0,this.ey=0,this.ew=0,this.eh=0,this.ecx=0,this.ecy=0,this.erx=0,this.ery=0,this.cx=0,this.cy=0,this.ix=0,this.iy=0,this.mx=0,this.my=0,this.vx=0,this.vy=0,this.onMouseMove=this.onMouseMove.bind(this),this.onDeviceOrientation=this.onDeviceOrientation.bind(this),this.onOrientationTimer=this.onOrientationTimer.bind(this),this.onCalibrationTimer=this.onCalibrationTimer.bind(this),this.onAnimationFrame=this.onAnimationFrame.bind(this),this.onWindowResize=this.onWindowResize.bind(this),this.initialise()}a.prototype.transformSupport=function(t){for(var i,e,s,o,n=d.createElement("div"),r=!1,a=null,h=!1,l=null,p=null,c=0,y=this.vendors.length;cthis.calibrationThreshold||Math.abs(i)>this.calibrationThreshold)&&this.queueCalibration(0),this.portrait?(this.mx=this.calibrateX?i:this.iy,this.my=this.calibrateY?t:this.ix):(this.mx=this.calibrateX?t:this.ix,this.my=this.calibrateY?i:this.iy),this.mx*=this.ew*(this.scalarX/100),this.my*=this.eh*(this.scalarY/100),isNaN(parseFloat(this.limitX))||(this.mx=this.clamp(this.mx,-this.limitX,this.limitX)),isNaN(parseFloat(this.limitY))||(this.my=this.clamp(this.my,-this.limitY,this.limitY)),this.vx+=(this.mx-this.vx)*this.frictionX,this.vy+=(this.my-this.vy)*this.frictionY;for(var e=0,s=this.$layers.length;eu.innerWidth,this.portrait!==s&&(this.portrait=s,this.calibrationFlag=!0),this.calibrationFlag&&(this.calibrationFlag=!1,this.cx=i,this.cy=e),this.ix=i,this.iy=e)},a.prototype.onMouseMove=function(t){var i=t.clientX,e=t.clientY;!this.orientationSupport&&this.relativeInput?(this.clipRelativeInput&&(i=Math.max(i,this.ex),i=Math.min(i,this.ex+this.ew),e=Math.max(e,this.ey),e=Math.min(e,this.ey+this.eh)),this.ix=(i-this.ex-this.ecx)/this.erx,this.iy=(e-this.ey-this.ecy)/this.ery):(this.ix=(i-this.wcx)/this.wrx,this.iy=(e-this.wcy)/this.wry)};var h={enable:a.prototype.enable,disable:a.prototype.disable,updateLayers:a.prototype.updateLayers,calibrate:a.prototype.calibrate,friction:a.prototype.friction,invert:a.prototype.invert,scalar:a.prototype.scalar,limit:a.prototype.limit,origin:a.prototype.origin};r.fn[o]=function(e){var s=arguments;return this.each(function(){var t=r(this),i=t.data(o);i||(i=new a(this,e),t.data(o,i)),h[e]&&i[e].apply(i,Array.prototype.slice.call(s,1))})}}(window.jQuery||window.Zepto,window,document); (function ($){ const wdtWidgetsOptionsHandler=function($scope){ const animationEffectInstance=new wdtWidgetsAnimationEffectHandlerInit($scope); animationEffectInstance.init(); const inviewInstance=new wdtWidgetsInViewHandlerInit($scope); inviewInstance.init(); }; const wdtWidgetsAnimationEffectHandlerInit=function($scope){ const $self=this, $window=$(window), $widgetId=$scope.data('id'), $editMode=Boolean(elementorFrontend.isEditMode()), $activeBreakpoints=elementorFrontend.config.responsive.activeBreakpoints, $deviceMode=elementorFrontend.getCurrentDeviceMode(); let $parallaxInstance; let $activeBreakpointkeys=[]; let $animationEffectSettings=false; let $animationEffectBreakpointSettings=[]; let $autoMoveElement; $self.init=function(){ $self.animationEffectInit(); }; $self.animationEffectInit=function(){ if($editMode){ $animationEffectSettings=$self.generateEditorSettings($widgetId); }else{ $animationEffectSettings=$scope.data('settings')||false; $animationEffectSettings=(false!==$animationEffectSettings) ? $animationEffectSettings:false; } if(!$animationEffectSettings||$animationEffectSettings['wdt_animation_effect']==='none'){ return false; } $self.updateActiveBreakpoints(); if($animationEffectSettings['wdt_animation_effect']==='mouse-move'){ $self.animationEffectMouseMove(); } if($animationEffectSettings['wdt_animation_effect']==='scroll'){ $self.animationEffectScroll(); } if($animationEffectSettings['wdt_animation_effect']==='auto-movement'){ $self.animationEffectAutoMovement(); } if($animationEffectSettings['wdt_animation_effect']==='marquee'){ $self.animationEffectMarquee(); }}; $self.generateEditorSettings=function($widgetId){ let $editorModels=null; let $editorSettings={}; if(!window.elementor.hasOwnProperty('elements')){ return false; } $editorModels=window.elementor.elements.models; if(!$editorModels){ return false; } $.each($editorModels, function(index, obj){ $.each(obj.attributes.elements.models, function(index, obj){ $.each(obj.attributes.elements.models, function(index, obj){ if($widgetId===obj.id){ $editorSettings=obj.attributes.settings.attributes; }}); }); }); let $wdtEditorKeys=Object.keys($editorSettings).filter((key)=> key.includes('wdt')); let $wdtEditorSettings=$wdtEditorKeys.reduce((cur, key)=> { return Object.assign(cur, { [key]: $editorSettings[key] })}, {}); let $customDirections=[]; if($wdtEditorSettings['wdt_ame_custom_directions']){ $.each($wdtEditorSettings['wdt_ame_custom_directions'].models, function(index, obj){ let $customDirection=obj.attributes; $customDirections.push($customDirection); }); } $wdtEditorSettings['wdt_ame_custom_directions']=$customDirections; return $wdtEditorSettings; }; $self.updateActiveBreakpoints=function(){ $.each($activeBreakpoints, function (key, value){ if('widescreen'===key){ $activeBreakpointkeys.push('desktop'); $activeBreakpointkeys.push(key); }else{ $activeBreakpointkeys.push(key); }}); if(-1===$activeBreakpointkeys.indexOf('widescreen')){ $activeBreakpointkeys.push('desktop'); }}; $self.getMouseMoveResponsiveSettings=function(){ $activeBreakpointkeys.forEach(function($breakpoint){ if('desktop'===$breakpoint){ $animationEffectBreakpointSettings[$breakpoint]={ 'speed':($animationEffectSettings['wdt_mme_speed']['size']&&''!=$animationEffectSettings['wdt_mme_speed']['size']) ? $animationEffectSettings['wdt_mme_speed']['size']:0.1, 'depth':($animationEffectSettings['wdt_mme_depth']['size']&&''!=$animationEffectSettings['wdt_mme_depth']['size']) ? $animationEffectSettings['wdt_mme_depth']['size']:1 };}else{ $animationEffectBreakpointSettings[$breakpoint]={ 'speed':($animationEffectSettings['wdt_mme_speed_' + $breakpoint]['size']&&''!=$animationEffectSettings['wdt_mme_speed_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_mme_speed_' + $breakpoint]['size']:$animationEffectSettings['wdt_mme_speed']['size'], 'depth':($animationEffectSettings['wdt_mme_depth_' + $breakpoint]['size']&&''!=$animationEffectSettings['wdt_mme_depth_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_mme_depth_' + $breakpoint]['size']:$animationEffectSettings['wdt_mme_depth']['size'] };}}); }; $self.animationEffectMouseMove=function(){ $self.getMouseMoveResponsiveSettings(); if(!$animationEffectBreakpointSettings[$deviceMode]){ return false; } const $speed=$animationEffectBreakpointSettings[$deviceMode].speed; const $depth=$animationEffectBreakpointSettings[$deviceMode].depth; const $moveAlong=$animationEffectSettings['wdt_mme_move_along'] ? $animationEffectSettings['wdt_mme_move_along']:'both'; const $invertMovement=$animationEffectSettings['wdt_mme_invert_movement'] ? Boolean($animationEffectSettings['wdt_mme_invert_movement']):false; let $options={}; $scope.find('.elementor-widget-container').wrapInner('
') $scope.find('.wdt-effect-mouse-move-wrapper').attr('data-depth', $depth); if($moveAlong==='x-axis'){ $options['scalarX']=10.0; $options['scalarY']=0.0; } if($moveAlong==='y-axis'){ $options['scalarX']=0.0; $options['scalarY']=10.0; } if($moveAlong==='both'){ $options['scalarX']=10.0; $options['scalarY']=10.0; } $options['frictionX']=$speed; $options['frictionY']=$speed; $options['invertX']=$invertMovement; $options['invertY']=$invertMovement; $parallaxInstance=$scope.parallax($options); }; $self.getScrollResponsiveSettings=function(){ let $wdt_sle_parallax_x_depth=($animationEffectSettings['wdt_sle_parallax_x_depth']&&''!=$animationEffectSettings['wdt_sle_parallax_x_depth']['size']) ? $animationEffectSettings['wdt_sle_parallax_x_depth']['size']:50; let $wdt_sle_parallax_y_depth=($animationEffectSettings['wdt_sle_parallax_y_depth']&&''!=$animationEffectSettings['wdt_sle_parallax_y_depth']['size']) ? $animationEffectSettings['wdt_sle_parallax_y_depth']['size']:50; let $wdt_sle_rotate_x_angle=($animationEffectSettings['wdt_sle_rotate_x_angle']&&''!=$animationEffectSettings['wdt_sle_rotate_x_angle']['size']) ? $animationEffectSettings['wdt_sle_rotate_x_angle']['size']:45; let $wdt_sle_rotate_y_angle=($animationEffectSettings['wdt_sle_rotate_y_angle']&&''!=$animationEffectSettings['wdt_sle_rotate_y_angle']['size']) ? $animationEffectSettings['wdt_sle_rotate_y_angle']['size']:45; let $wdt_sle_rotate_z_angle=($animationEffectSettings['wdt_sle_rotate_z_angle']&&''!=$animationEffectSettings['wdt_sle_rotate_z_angle']['size']) ? $animationEffectSettings['wdt_sle_rotate_z_angle']['size']:45; let $wdt_sle_scale_value=($animationEffectSettings['wdt_sle_scale_value']&&''!=$animationEffectSettings['wdt_sle_scale_value']['size']) ? $animationEffectSettings['wdt_sle_scale_value']['size']:1; let $wdt_sle_blur_value=($animationEffectSettings['wdt_sle_blur_value']&&''!=$animationEffectSettings['wdt_sle_blur_value']['size']) ? $animationEffectSettings['wdt_sle_blur_value']['size']:0; let $wdt_sle_opacity_value=($animationEffectSettings['wdt_sle_opacity_value']&&''!=$animationEffectSettings['wdt_sle_opacity_value']['size']) ? $animationEffectSettings['wdt_sle_opacity_value']['size']:1; $activeBreakpointkeys.forEach(function($breakpoint){ if('desktop'===$breakpoint){ $animationEffectBreakpointSettings[$breakpoint]={ 'parallaxDepthX': $wdt_sle_parallax_x_depth, 'parallaxDepthY': $wdt_sle_parallax_y_depth, 'rotateAngleX':$wdt_sle_rotate_x_angle, 'rotateAngleY':$wdt_sle_rotate_y_angle, 'rotateAngleZ':$wdt_sle_rotate_z_angle, 'scaleValue':$wdt_sle_scale_value, 'blurValue':$wdt_sle_blur_value, 'opacityValue':$wdt_sle_opacity_value };}else{ $animationEffectBreakpointSettings[$breakpoint]={ 'parallaxDepthX':($animationEffectSettings['wdt_sle_parallax_x_depth_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_parallax_x_depth_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_parallax_x_depth_' + $breakpoint]['size']:$wdt_sle_parallax_x_depth, 'parallaxDepthY':($animationEffectSettings['wdt_sle_parallax_y_depth_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_parallax_y_depth_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_parallax_y_depth_' + $breakpoint]['size']:$wdt_sle_parallax_y_depth, 'rotateAngleX':($animationEffectSettings['wdt_sle_rotate_x_angle_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_rotate_x_angle_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_rotate_x_angle_' + $breakpoint]['size']:$wdt_sle_rotate_x_angle, 'rotateAngleY':($animationEffectSettings['wdt_sle_rotate_y_angle_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_rotate_y_angle_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_rotate_y_angle_' + $breakpoint]['size']:$wdt_sle_rotate_y_angle, 'rotateAngleZ':($animationEffectSettings['wdt_sle_rotate_z_angle_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_rotate_z_angle_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_rotate_z_angle_' + $breakpoint]['size']:$wdt_sle_rotate_z_angle, 'scaleValue':($animationEffectSettings['wdt_sle_scale_value_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_scale_value_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_scale_value_' + $breakpoint]['size']:$wdt_sle_scale_value, 'blurValue':($animationEffectSettings['wdt_sle_blur_value_' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_blur_value_' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_blur_value_' + $breakpoint]['size']:$wdt_sle_blur_value, 'opacityValue':($animationEffectSettings['wdt_sle_opacity_value' + $breakpoint]&&''!=$animationEffectSettings['wdt_sle_opacity_value' + $breakpoint]['size']) ? $animationEffectSettings['wdt_sle_opacity_value' + $breakpoint]['size']:$wdt_sle_opacity_value, };}}); }; $self.animationEffectScroll=function(){ $self.getScrollResponsiveSettings(); if(!$animationEffectBreakpointSettings[$deviceMode]){ return false; } $scope.find('.elementor-widget-container').wrapInner('
') const $parallaxDirectionX=$animationEffectSettings['wdt_sle_parallax_x_direction'] ? Boolean($animationEffectSettings['wdt_sle_parallax_x_direction']):false; const $parallaxDepthX=$animationEffectBreakpointSettings[$deviceMode].parallaxDepthX; const $parallaxDirectionY=$animationEffectSettings['wdt_sle_parallax_y_direction'] ? Boolean($animationEffectSettings['wdt_sle_parallax_y_direction']):false; const $parallaxDepthY=$animationEffectBreakpointSettings[$deviceMode].parallaxDepthY; const $rotateX=$animationEffectSettings['wdt_sle_rotate_x'] ? Boolean($animationEffectSettings['wdt_sle_rotate_x']):false; const $rotateAngleX=$animationEffectBreakpointSettings[$deviceMode].rotateAngleX; const $rotateY=$animationEffectSettings['wdt_sle_rotate_y'] ? Boolean($animationEffectSettings['wdt_sle_rotate_y']):false; const $rotateAngleY=$animationEffectBreakpointSettings[$deviceMode].rotateAngleY; const $rotateZ=$animationEffectSettings['wdt_sle_rotate_z'] ? Boolean($animationEffectSettings['wdt_sle_rotate_z']):false; const $rotateAngleZ=$animationEffectBreakpointSettings[$deviceMode].rotateAngleZ; const $scale=$animationEffectSettings['wdt_sle_scale'] ? Boolean($animationEffectSettings['wdt_sle_scale']):false; const $scaleValue=$animationEffectBreakpointSettings[$deviceMode].scaleValue; const $blur=$animationEffectSettings['wdt_sle_blur'] ? Boolean($animationEffectSettings['wdt_sle_blur']):false; const $blurValue=$animationEffectBreakpointSettings[$deviceMode].blurValue; const $opacity=$animationEffectSettings['wdt_sle_opacity'] ? Boolean($animationEffectSettings['wdt_sle_opacity']):false; const $opacityValue=$animationEffectBreakpointSettings[$deviceMode].opacityValue; const $itemTop=+$scope.find('.wdt-effect-scroll-wrapper').offset().top; const $itemHeight=+$scope.find('.wdt-effect-scroll-wrapper').height(); const $toScroll=($itemTop + $itemHeight); const $windowHeight=$window.height(); const $fromScroll=($itemTop - $windowHeight); let $options={'distance': 10, 'smoothness': 30, 'from-scroll': $fromScroll, 'to-scroll': $toScroll}; if($parallaxDirectionX){ $options['x']=$parallaxDepthX; } if($parallaxDirectionY){ $options['y']=$parallaxDepthY; } if($rotateX){ $options['rotateX']=$rotateAngleX; } if($rotateY){ $options['rotateY']=$rotateAngleY; } if($rotateZ){ $options['rotateZ']=$rotateAngleZ; } if($scale){ $options['scale']=$scaleValue; } if($blur){ $options['blur']=$blurValue; } if($opacity){ $options['opacity']=$opacityValue; } $scope.find('.wdt-effect-scroll-wrapper').attr('data-parallax', JSON.stringify($options)); }; $self.autoMovementOnIntersect=function(entries, $observer){ entries.forEach((entry)=> { if(entry.isIntersecting){ $autoMoveElement.play(); }else{ $autoMoveElement.pause(); }}); } $self.generateResponsiveRandomPoints=function($direction){ let $reponsiveRandoms={}; let $wdt_x_depth=($direction['wdt_x_depth']&&''!=$direction['wdt_x_depth']['size']) ? $direction['wdt_x_depth']['size']:0; let $wdt_y_depth=($direction['wdt_y_depth']&&''!=$direction['wdt_y_depth']['size']) ? $direction['wdt_y_depth']['size']:0; let $wdt_rotate_angle=($direction['wdt_rotate_angle']&&''!=$direction['wdt_rotate_angle']['size']) ? $direction['wdt_rotate_angle']['size']:0; let $wdt_scale_value=($direction['wdt_scale_value']&&''!=$direction['wdt_scale_value']['size']) ? $direction['wdt_scale_value']['size']:1; let $wdt_blur_value=($direction['wdt_blur_value']&&''!=$direction['wdt_blur_value']['size']) ? $direction['wdt_blur_value']['size']:0; let $wdt_opacity_value=($direction['wdt_opacity_value']&&''!=$direction['wdt_opacity_value']['size']) ? $direction['wdt_opacity_value']['size']:1; $activeBreakpointkeys.forEach(function($breakpoint){ if('desktop'===$breakpoint){ $reponsiveRandoms[$breakpoint]={ 'depthX':$wdt_x_depth, 'depthY':$wdt_y_depth, 'rotateAngle':$wdt_rotate_angle, 'scaleValue':$wdt_scale_value, 'blurValue':$wdt_blur_value, 'opacityValue': $wdt_opacity_value };}else{ $reponsiveRandoms[$breakpoint]={ 'depthX':($direction['wdt_x_depth_' + $breakpoint]&&''!=$direction['wdt_x_depth_' + $breakpoint]['size']) ? $direction['wdt_x_depth_' + $breakpoint]['size']:$wdt_x_depth, 'depthY':($direction['wdt_y_depth_' + $breakpoint]&&''!=$direction['wdt_y_depth_' + $breakpoint]['size']) ? $direction['wdt_y_depth_' + $breakpoint]['size']:$wdt_y_depth, 'rotateAngle':($direction['wdt_rotate_angle_' + $breakpoint]&&''!=$direction['wdt_rotate_angle_' + $breakpoint]['size']) ? $direction['wdt_rotate_angle_' + $breakpoint]['size']:$wdt_rotate_angle, 'scaleValue':($direction['wdt_scale_value_' + $breakpoint]&&''!=$direction['wdt_scale_value_' + $breakpoint]['size']) ? $direction['wdt_scale_value_' + $breakpoint]['size']:$wdt_scale_value, 'blurValue':($direction['wdt_blur_value_' + $breakpoint]&&''!=$direction['wdt_blur_value_' + $breakpoint]['size']) ? $direction['wdt_blur_value_' + $breakpoint]['size']:$wdt_blur_value, 'opacityValue':($direction['wdt_opacity_value' + $breakpoint]&&''!=$direction['wdt_opacity_value' + $breakpoint]['size']) ? $direction['wdt_opacity_value' + $breakpoint]['size']:$wdt_opacity_value, };}}); return $reponsiveRandoms; }; $self.generateRandomPoints=function($ameCustomDirections){ let $points=[]; $ameCustomDirections.forEach(($direction)=> { let $unitPoint={}; const $responsiveDirections=$self.generateResponsiveRandomPoints($direction); $unitPoint={ transform: '' }; const $xDirection=$direction['wdt_x_direction'] ? Boolean($direction['wdt_x_direction']):false; const $depthX=$responsiveDirections[$deviceMode].depthX; const $yDirection=$direction['wdt_y_direction'] ? Boolean($direction['wdt_y_direction']):false; const $depthY=$responsiveDirections[$deviceMode].depthY; const $rotate=$direction['wdt_rotate'] ? Boolean($direction['wdt_rotate']):false; const $rotateAngle=$responsiveDirections[$deviceMode].rotateAngle; const $scale=$direction['wdt_scale'] ? Boolean($direction['wdt_scale']):false; const $scaleValue=$responsiveDirections[$deviceMode].scaleValue; if($xDirection){ $unitPoint['transform'] +='translateX('+$depthX+'px) '; } if($yDirection){ $unitPoint['transform'] +='translateY('+$depthY+'px) '; } if($rotate){ $unitPoint['transform'] +='rotate('+$rotateAngle+'deg) '; } if($scale){ $unitPoint['transform'] +='scale('+$scaleValue+') '; } $unitPoint['transform']=$.trim($unitPoint['transform']) $unitPoint['opacity']=0.2; const $blur=$direction['wdt_blur'] ? Boolean($direction['wdt_blur']):false; const $blurValue=$responsiveDirections[$deviceMode].blurValue; if($blur){ $unitPoint['filter']='blur('+$blurValue+'px)'; } const $opacity=$direction['wdt_opacity'] ? Boolean($direction['wdt_opacity']):false; const $opacityValue=$responsiveDirections[$deviceMode].opacityValue; if($opacity){ $unitPoint['opacity']=+$opacityValue; } if($unitPoint){ $points.push($unitPoint); }}); return $points; } $self.animationEffectAutoMovement=function(){ $scope.find('.elementor-widget-container').wrapInner('
') let $autoMoveElementItem=$scope.find('.wdt-effect-auto-movement-wrapper')[0]; let $ameDirection=$animationEffectSettings['wdt_ame_direction']; let $ameDuration=$animationEffectSettings['wdt_ame_duration']['size'] ? Math.ceil($animationEffectSettings['wdt_ame_duration']['size']*1500):10000; let $ameIteration=($animationEffectSettings['wdt_ame_iteration']==='infinity') ? Infinity:1; let $boundTo=$animationEffectSettings['wdt_bound_to'] ? $animationEffectSettings['wdt_bound_to']:'section'; let $boundToElement=($boundTo==='section') ? $scope.parents('.elementor-section'):$scope.parents('.elementor-column'); let $itemWidth=+$scope.find('.wdt-effect-auto-movement-wrapper').width(); let $sectionWidth=+$boundToElement.width(); let $sectionItemWidth=+$sectionWidth + +$itemWidth; let $itemHeight=+$scope.find('.wdt-effect-auto-movement-wrapper').height(); let $sectionHeight=+$boundToElement.height(); let $sectionItemHeight=+$sectionHeight + +$itemHeight; if($ameDirection==='left-to-right'){ $autoMoveElement=$autoMoveElementItem.animate([ { transform: 'translateX(-'+$itemWidth+'px)' }, { transform: 'translateX('+$sectionWidth+'px)' } ], { duration: $ameDuration, iterations: $ameIteration }); $autoMoveElement.pause(); }else if($ameDirection==='right-to-left'){ $autoMoveElement=$autoMoveElementItem.animate([ { transform: 'translateX('+$sectionItemWidth+'px)' }, { transform: 'translateX(-'+$itemWidth+'px)' } ], { duration: $ameDuration, iterations: $ameIteration }); $autoMoveElement.pause(); }else if($ameDirection==='top-to-bottom'){ $autoMoveElement=$autoMoveElementItem.animate([ { transform: 'translateY(-'+$itemHeight+'px)' }, { transform: 'translateY('+$sectionHeight+'px)' } ], { duration: $ameDuration, iterations: $ameIteration }); $autoMoveElement.pause(); }else if($ameDirection==='bottom-to-top'){ $autoMoveElement=$autoMoveElementItem.animate([ { transform: 'translateY('+$sectionItemHeight+'px)' }, { transform: 'translateY(-'+$itemHeight+'px)' } ], { duration: $ameDuration, iterations: $ameIteration }); $autoMoveElement.pause(); }else if($ameDirection==='custom'){ let $ameCustomDirections=$animationEffectSettings['wdt_ame_custom_directions']; if($ameCustomDirections.length){ let $ameCustomDirectionPoints=$self.generateRandomPoints($ameCustomDirections); $autoMoveElement=$autoMoveElementItem.animate($ameCustomDirectionPoints, { duration: $ameDuration, iterations: $ameIteration }); $autoMoveElement.pause(); }} if('IntersectionObserver' in window){ let $observer; let $observerOptions={ root: null, rootMargin: "0px", threshold: 0.1 }; $observer=new IntersectionObserver($self.autoMovementOnIntersect, $observerOptions); $observer.observe($scope[0]); }else{ $autoMoveElement.play(); }}; $self.animationEffectMarquee=function(){ $scope.find('.elementor-widget-container').wrapInner('
') let $marqueeElementItem=$scope.find('.wdt-effect-marquee-wrapper'); let $width=$animationEffectSettings['wdt_mqe_width']['size'] ? $animationEffectSettings['wdt_mqe_width']['size']:200; let $height=$animationEffectSettings['wdt_mqe_height']['size'] ? $animationEffectSettings['wdt_mqe_height']['size']:120; let $speed=$animationEffectSettings['wdt_mqe_speed']['size'] ? $animationEffectSettings['wdt_mqe_speed']['size']:1; let $direction=$animationEffectSettings['wdt_mqe_direction'] ? $animationEffectSettings['wdt_mqe_direction']:'left-to-right'; let $boundTo=$animationEffectSettings['wdt_mqe_bound_to'] ? $animationEffectSettings['wdt_mqe_bound_to']:'section'; let $boundToElement=($boundTo==='section') ? $scope.parents('.elementor-section'):$scope.parents('.elementor-column'); $marqueeElementItem.css({ 'position': 'absolute', 'width': $width, 'height': $height }); const $itemWidth=$marqueeElementItem.width(); const $itemOffset=$marqueeElementItem.offset(); const $itemOffsetLeft=$itemOffset.left; const $parentWidth=$boundToElement.width(); const $parentOffset=$boundToElement.offset(); const $parentOffsetLeft=$parentOffset.left; if($direction=='right-to-left'){ let $itemInitPosition=0; const $leftDiff=parseFloat($itemOffsetLeft) - parseFloat($parentOffsetLeft); const $rightPositionX=parseFloat($parentWidth) - parseFloat($leftDiff); let $leftOffset=parseFloat($leftDiff) + parseFloat($itemWidth); $leftOffset='-' + parseFloat($leftOffset); function animationLoop(){ $itemInitPosition=$itemInitPosition - $speed; $marqueeElementItem.css({ 'left': $itemInitPosition + 'px' }); $frameRtlID=window.requestAnimationFrame(animationLoop); if($itemInitPosition <=$leftOffset){ window.cancelAnimationFrame($frameRtlID); $itemInitPosition=$rightPositionX; $frameRtlID=window.requestAnimationFrame(animationLoop); }} let $frameRtlID=window.requestAnimationFrame(animationLoop); }else{ let $itemInitPosition=0; const $leftDiff=parseFloat($itemOffsetLeft) - parseFloat($parentOffsetLeft); const $maxPositionWidth=parseFloat($leftDiff) + parseFloat($itemWidth); const $maxPositionX=parseFloat($parentWidth) - parseFloat($maxPositionWidth) + parseFloat($itemWidth); const $loopPositionX=parseFloat($leftDiff) + parseFloat($itemWidth); function animationLoop(){ $itemInitPosition=$itemInitPosition + $speed; $marqueeElementItem.css({ 'left': $itemInitPosition + 'px' }); $frameLtrID=window.requestAnimationFrame(animationLoop); if($itemInitPosition >=$maxPositionX){ window.cancelAnimationFrame($frameLtrID); $itemInitPosition=-$loopPositionX; $frameLtrID=window.requestAnimationFrame(animationLoop); }} let $frameLtrID=window.requestAnimationFrame(animationLoop); }};}; const wdtWidgetsInViewHandlerInit=function($scope){ const $self=this, $window=$(window), $widgetId=$scope.data('id'), $editMode=Boolean(elementorFrontend.isEditMode()); let $inViewSettings=false; let $inViewLoop=false; let $inViewElement=$scope[0]; $self.init=function(){ $self.inViewStatusUpdateInit(); }; $self.inViewStatusUpdateInit=function(){ if($editMode){ $inViewSettings=$self.generateEditorSettings($widgetId); }else{ $inViewSettings=$scope.data('settings')||false; $inViewSettings=(false!==$inViewSettings) ? $inViewSettings:false; } if(!$inViewSettings||!$inViewSettings['wdt_enable_inview_status']){ return false; } $inViewLoop=$inViewSettings['wdt_enable_inview_loop']; if('IntersectionObserver' in window){ $self.createObserver(); }}; $self.generateEditorSettings=function($widgetId){ let $editorModels=null; let $editorSettings={}; if(!window.elementor.hasOwnProperty('elements')){ return false; } $editorModels=window.elementor.elements.models; if(!$editorModels){ return false; } $.each($editorModels, function(index, obj){ $.each(obj.attributes.elements.models, function(index, obj){ $.each(obj.attributes.elements.models, function(index, obj){ if($widgetId===obj.id){ $editorSettings=obj.attributes.settings.attributes; }}); }); }); let $wdtEditorKeys=Object.keys($editorSettings).filter((key)=> key.includes('wdt')); let $wdtEditorSettings=$wdtEditorKeys.reduce((cur, key)=> { return Object.assign(cur, { [key]: $editorSettings[key] })}, {}); return $wdtEditorSettings; }; $self.createObserver=function(){ let $observer; let $options={ root: null, rootMargin: "0px", threshold: 1 }; $observer=new IntersectionObserver($self.handleIntersect, $options); $observer.observe($inViewElement); } $self.handleIntersect=function(entries, $observer){ entries.forEach((entry)=> { if(entry.isIntersecting){ entry.target.classList.add('wdt-item-is-inview'); }else{ if($inViewLoop){ entry.target.classList.remove('wdt-item-is-inview'); }} }); }}; $(window).on('elementor/frontend/init', function (){ elementorFrontend.hooks.addAction('frontend/element_ready/widget', wdtWidgetsOptionsHandler); }); })(jQuery); var debounce=function(t,e,a){var n;return function(){var r=this,u=arguments,i=a&&!n;clearTimeout(n),n=setTimeout((function(){n=null,a||t.apply(r,u)}),e),i&&t.apply(r,u)}};function returnCurrencySymbol(t=null){if(null===t)return"";let e={USD:"$",EUR:"€",CRC:"₡",GBP:"£",ILS:"₪",INR:"₹",JPY:"¥",KRW:"₩",NGN:"₦",PHP:"₱",PLN:"zł",PYG:"₲",THB:"฿",UAH:"₴",VND:"₫"};return void 0!==e[t]?e[t]:""}jQuery(document).ready((function(){jQuery(".bdt-ss-link").on("click",(function(){var t=jQuery("");jQuery("body").append(t),t.val(jQuery(this).data("url")).select(),document.execCommand ("copy"),t.remove(),jQuery(this).find(".bdt-social-share-title").html(jQuery(this).data("copied")),setTimeout(()=>{jQuery(this).find(".bdt-social-share-title").html(jQuery(this).data("orginal"))},5e3)}))})),jQuery(document).ajaxComplete((function(t,e,a){if(e.responseJSON&&void 0!==e.responseJSON.cart_hash&&e.responseJSON.cart_hash&&jQuery(".bdt-offcanvas").hasClass("__update_cart")){let t=jQuery(".bdt-offcanvas.__update_cart").attr("id");bdtUIkit.util.ready((function(){bdtUIkit.offcanvas("#"+t).show()}))}})); (()=>{"use strict";var e,r,n,a={},c={};function __webpack_require__(e){var r=c[e];if(void 0!==r)return r.exports;var n=c[e]={exports:{}};return a[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=a,e=[],__webpack_require__.O=(r,n,a,c)=>{if(!n){var i=1/0;for(o=0;o=c)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](n[t])))?n.splice(t--,1):(_=!1,c0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,a,c]},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((r,n)=>(__webpack_require__.f[n](e,r),r)),[])),__webpack_require__.u=e=>714===e?"code-highlight.28a979661569ddbbf60d.bundle.min.js":721===e?"video-playlist.74fca1f2470fa6474595.bundle.min.js":256===e?"paypal-button.3d0d5af7df85963df32c.bundle.min.js":699===e?"60745ddf42fde6647dbc.bundle.min.js":156===e?"stripe-button.2acbca466dfeb9585680.bundle.min.js":241===e?"progress-tracker.e19e2547639d7d9dac17.bundle.min.js":26===e?"animated-headline.ffb4bb4ce1b16b11446d.bundle.min.js":534===e?"media-carousel.aca2224ef13e6f999011.bundle.min.js":369===e?"carousel.9b02b45d7826c1c48f33.bundle.min.js":804===e?"countdown.b0ef6392ec4ff09ca2f2.bundle.min.js":888===e?"hotspot.6ab1751404c381bfe390.bundle.min.js":680===e?"form.72b77b99d67b130634d2.bundle.min.js":121===e?"gallery.8ca9a354ce039d1ba641.bundle.min.js":288===e?"lottie.565b778d23c04461c4ea.bundle.min.js":42===e?"nav-menu.70d63d6d093f3a45a0c6.bundle.min.js":50===e?"popup.483b906ddaa1af17ff14.bundle.min.js":985===e?"load-more.064e7e640e7ef9c3fc30.bundle.min.js":287===e?"posts.e33113a212454e383747.bundle.min.js":824===e?"portfolio.042905bde20a1afccada.bundle.min.js":58===e?"share-buttons.81497e7fccd4fa77b6b9.bundle.min.js":114===e?"slides.fb6b9afd278bb9c5e75b.bundle.min.js":443===e?"social.2d2e44e8608690943f29.bundle.min.js":838===e?"table-of-contents.e42afd7d58cf06ab7a63.bundle.min.js":685===e?"archive-posts.80f1139e64eb8bd1a74a.bundle.min.js":858===e?"search-form.6eb419c467197ca411a7.bundle.min.js":102===e?"woocommerce-menu-cart.faa7b80e9ba9e5072070.bundle.min.js":1===e?"woocommerce-purchase-summary.46445ab1120a8c28c05c.bundle.min.js":124===e?"woocommerce-checkout-page.b18af78282979b6f74e4.bundle.min.js":859===e?"woocommerce-cart.fc30c6cb753d4098eff5.bundle.min.js":979===e?"woocommerce-my-account.3ee10d01e625dad87f73.bundle.min.js":497===e?"woocommerce-notices.da27b22c491f7cbe9158.bundle.min.js":800===e?"product-add-to-cart.023d7d31fbf96c3dbdfc.bundle.min.js":149===e?"loop.a9bed2dcd86eddf71249.bundle.min.js":153===e?"loop-carousel.4e8fd6593adbba21698e.bundle.min.js":356===e?"ajax-pagination.a2f9062c62a0ff30f25e.bundle.min.js":495===e?"mega-menu.f4e036531fed147c8f1f.bundle.min.js":157===e?"mega-menu-stretch-content.b203a97f096c18f3d1a2.bundle.min.js":244===e?"menu-title-keyboard-handler.ec514149d506e0fe9c54.bundle.min.js":209===e?"nested-carousel.9145d6891784d5818672.bundle.min.js":188===e?"taxonomy-filter.c1e2da2a112b3ab83ed8.bundle.min.js":void 0,__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},n="elementor-pro:",__webpack_require__.l=(e,a,c,i)=>{if(r[e])r[e].push(a);else{var _,t;if(void 0!==c)for(var b=document.getElementsByTagName("script"),o=0;o{_.onerror=_.onload=null,clearTimeout(d);var c=r[e];if(delete r[e],_.parentNode&&_.parentNode.removeChild(_),c&&c.forEach((e=>e(a))),n)return n(a)},d=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:_}),12e4);_.onerror=onScriptComplete.bind(null,_.onerror),_.onload=onScriptComplete.bind(null,_.onload),t&&document.head.appendChild(_)}},(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var r=__webpack_require__.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var n=r.getElementsByTagName("script");n.length&&(e=n[n.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{var e={396:0};__webpack_require__.f.j=(r,n)=>{var a=__webpack_require__.o(e,r)?e[r]:void 0;if(0!==a)if(a)n.push(a[2]);else if(396!=r){var c=new Promise(((n,c)=>a=e[r]=[n,c]));n.push(a[2]=c);var i=__webpack_require__.p+__webpack_require__.u(r),_=new Error;__webpack_require__.l(i,(n=>{if(__webpack_require__.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var c=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;_.message="Loading chunk "+r+" failed.\n("+c+": "+i+")",_.name="ChunkLoadError",_.type=c,_.request=i,a[1](_)}}),"chunk-"+r,r)}else e[r]=0},__webpack_require__.O.j=r=>0===e[r];var webpackJsonpCallback=(r,n)=>{var a,c,[i,_,t]=n,b=0;if(i.some((r=>0!==e[r]))){for(a in _)__webpack_require__.o(_,a)&&(__webpack_require__.m[a]=_[a]);if(t)var o=t(__webpack_require__)}for(r&&r(n);b